# 在python语言中形成闭包的三个条件，缺一不可：
# 1)必须有一个内嵌函数(函数里定义的函数）——这对应函数之间的嵌套
# 2)内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量——内部函数引用外部变量
# 3)外部函数必须返回内嵌函数——必须返回那个内部函数

def outer():
    x = 0

    def inner():
        nonlocal x
        x += 1
        return x

    return inner


res = outer()
print(type(res))
print(res())
print(res())
print(res())


# def inn():
#     x = 0
#     x += 1
#     return x
#
#
# print(inn())
# print(inn())
# print(inn())
